blob: d58100c62aed75b3ee1fbe2e84592456bcbc8580 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
Compilation unit elements:
(
function-decl
"shed__runtime__gc_get_root_stack_index"
params=()
return-type=int
)
(
function-decl
"shed__runtime__int_add"
params=((param "left" int) (param "right" int))
return-type=int
)
(
function-decl
"shed__runtime__gc_set_root_stack_index"
params=((param "gc_root_stack_index" int))
return-type=void
)
(
function-decl
"shed__runtime__gc_push_root"
params=((param "gc_root" int))
return-type=void
)
(
function
"shed__function__f__0"
visibility=private
locals=((param "closurePointer__0" data-ptr) (param "local__param1" int) (param "local__param2" int) (param "local__paramA" int) (param "local__paramB" int) (param "local__paramC" int) (val "local__a" int) (val "local__b" int) (val "gcRootStackIndex__0" int) (val "binaryOpResult__0" int) (val "binaryOpResult__1" int))
return-type=int
body=(
(
memory-load
(local "local__a")
pointer=(local "closurePointer__0")
layout=(struct ((struct (data-ptr int32 int32)) (struct (function-ptr (struct ()) (struct (int int))))))
element-offsets=(1 2 0)
)
(
memory-load
(local "local__b")
pointer=(local "closurePointer__0")
layout=(struct ((struct (data-ptr int32 int32)) (struct (function-ptr (struct ()) (struct (int int))))))
element-offsets=(1 2 1)
)
(call (local "gcRootStackIndex__0") "shed__runtime__gc_get_root_stack_index" ())
(call (local "binaryOpResult__0") "shed__runtime__int_add" ((local "local__a") (local "local__param1")))
(call (local "binaryOpResult__1") "shed__runtime__int_add" ((local "binaryOpResult__0") (local "local__paramA")))
(call _ "shed__runtime__gc_set_root_stack_index" ((local "gcRootStackIndex__0")))
(call _ "shed__runtime__gc_push_root" ((local "binaryOpResult__1")))
(return (local "binaryOpResult__1"))
)
)
(
function-decl
"shed__runtime__gc_alloc"
params=((param "size" int) (param "runtime_type_tag" int32))
return-type=data-ptr
)
Locals:
* (param "local__a" int)
* (param "local__b" int)
* (val "closure__f__0" int)
* (val "closurePointer__f__0" data-ptr)
Instructions:
(
(call (local "closurePointer__f__0") "shed__runtime__gc_alloc" ((int-const (byte-size-of (struct ((struct (data-ptr int32 int32)) (struct (function-ptr (struct ()) (struct (int int)))))))) (int32-const 3)))
(
memory-store
pointer=(local "closurePointer__f__0")
layout=(struct ((struct (data-ptr int32 int32)) (struct (function-ptr (struct ()) (struct (int int))))))
element-offsets=(1 2 0)
value=(int-const 0)
)
(
memory-store
pointer=(local "closurePointer__f__0")
layout=(struct ((struct (data-ptr int32 int32)) (struct (function-ptr (struct ()) (struct (int int))))))
element-offsets=(1 2 1)
value=(int-const 0)
)
(
memory-store
pointer=(local "closurePointer__f__0")
layout=(struct ((struct (data-ptr int32 int32)) (struct (function-ptr (struct ()) (struct (int int))))))
element-offsets=(1 0)
value=(function-ptr-const "shed__function__f__0")
)
(
memory-store
pointer=(local "closurePointer__f__0")
layout=(struct ((struct (data-ptr int32 int32)) (struct (function-ptr (struct ()) (struct (int int))))))
element-offsets=(1 2 0)
value=(local "local__a")
)
(
memory-store
pointer=(local "closurePointer__f__0")
layout=(struct ((struct (data-ptr int32 int32)) (struct (function-ptr (struct ()) (struct (int int))))))
element-offsets=(1 2 1)
value=(local "local__b")
)
(data-ptr-to-int (local "closure__f__0") (local "closurePointer__f__0"))
)
Temporary stack:
* PatioLocalRef[name=closure__f__0]
|